ediblecity

An R package to estimate the contributions of urban agriculture to sustainability

Josep Pueyo-Ros

2023-11-17

A bit of context

  • Extensive research is conducted to model food production.
  • Nevertheless, clear evidence regarding the extent of urban agriculture’s contribution to sustainability in cities is lacking.

The ediblecity package

  • The aim is to simulate urban agriculture scenarios and to estimate their benefits.
  • It can simulate community and commercial urban gardens on the ground and on rooftops.
  • It estimates 8 indicators using literature values to define the parameters.
  • The parameters were randomized using random uniform distributions wthin the range found in literature.
Indicator Description
food_production Amount of food produced in the city.
green_capita Green per capita can be computed as raw or as the difference among neighbourhoods.
green_distance Distance to closest public green area larger than certain surface. It computes also the proportion of homes that are further than a specific threshold.
UHI Urban heat island as a raster (stars object) or as numeric values.
edible_jobs Number of jobs created by commercial urban agriculture.
edible_volunteers Number of volunteers involved in community urban agriculture.
no2_seq Amount of NO2 sequestered by urban green (in gr/s).
runoff_prev Runoff in the city after a specific rain event. It also computes the amount of rainwater harvested by urban agriculture initiatives.

Simulate scenarios with set_scenario()

ediblecity::set_scenario(
1  x,
2  pGardens = 1,
  pVacant = 1,
  pRooftop = 1,
3  edible_area_garden = c(0.02, 0.3),
  edible_area_vacant = c(0.52, 0.75),
  edible_area_rooftop = c(0.6, 0.62),
4  min_area_garden = 10,
  min_area_vacant = 100,
  min_area_rooftop = 100,
5  private_gardens_from = "Normal garden",
  vacant_from = "Vacant",
  rooftop_from = "Rooftop",
6  pCommercial = 0,
7  area_field = "flat_area",
8  quiet = FALSE
)
1
An ‘sf’ object with the urban model of your city and a ‘land_use’ field with categories of urban features. Here we use the city_example provided with the package.
2
The proportion of each type of gardens that will become urban agriculture [0-1].
3
The proportion of surface of previous land use that is occupied by edible plants [0-1].
4
The minimum area that the plot must have to become a urban garden.
5
The categories in ‘land_uses’ potentially converted to each type of urban garden.
6
The proportion of plots and rooftop that will be commercial. The rest will be community gardens In rooftops it is equivalent to raised beds and hydroponic system respectively.
7
The field to be used as the area of each feature. If NULL, the area is calculated with sf::st_area()
8
If ‘TRUE’, warnings about proportions not satisfied are not triggered.

Application in Sant Narcís (Girona)

Land uses

  • Rooftops (i.e. building footprints) are the most frequent land use and the one with the greatest extension.
  • However, only 39 rooftops are flat, and thus potential urban gardens. And from those, only 6 have more than 50 m2 of flat surface.
  • So, we will focus on gardens on the ground.

Creation of current and future scenarios.

  • We compare the current and a future scenario where all streets larger than 100 m2 were converted to community urban gardens (111 streets).
future_scenario <- set_scenario(city_example, pGardens = 0, pVacant = 1, pRooftop = 0, 
                           pCommercial = 0,
                           vacant_from = "Streets")
  • The scenario simulation was randomized using a Monte carlo iteration of 1,000 times.

Estimation of indicators

Urban heat island

UHI(
  x,
  SVF,
  green_df = NULL,
  Qql = 6.11,
  Cair = 1007,
  Pair = 1.14,
  Tmax = 30.8,
  Tmin = 20,
  windspeed = 2.77,
  return_raster = FALSE,
  verbose = FALSE
)

The UHI indicator measures the overall urban heat island using the sky view factor and the land covers.

The future scenario will suppose a reduction of 0.27 degrees of average temperature in the neighbourhood.

\[ UHI = \frac{1}{N}\sum_{i=1}^{N}{(2 - SVF_i - Fveg_i) \times \sqrt[4]{\frac{\frac{Q_ql}{C_air \times P_air} \times \Delta{T^3}}{U}}} \]

Runoff mitigation

runoff_prev(
  x,
  runoff_df = NULL,
  rain = 85,
  floors_field = "floors",
  harvest_dist = 10,
  tank_size = c(0, 45)
)

This indicator calculates the average height of runoff in the scenario using the SCS runoff curve number method.

\[ Q = \frac{(P - I_a)^2}{(P - I_a) + S} \] where \(P\) is the rainfall volume in mm; \(I_a\) is the initial abstraction; and \(S\) is the potential soil moisture retention. The SCS generalizes \(I_a\) as \(0.2S\), we modified this generalization to include the rainwater harvested:

\[ I_a = 0.2S + \sum_{i=1}^{N}{min\{Rh, Ws\}_i} \]

where \(Rh\) is the potential water harvested, calculated as the amount of water fallen on the surface of adjacent higher buildings; and \(Ws\) is the water storage capacity. From both, the minimum is used to calculate \(I_a\).

Given a rain event of 85 l/day, the difference in runoff prevention between current and future scenario is 1.36 mm.

Green per capita and distance to green

green_capita(
  x,
  green_categories = NULL,
  inhabitants = NULL,
  neighbourhoods = NULL,
  inh_col = NULL,
  name_col = NULL,
  private = FALSE,
  verbose = FALSE,
  min_inh = 0
)
green_distance(
  x,
  green_cat = NULL,
  min_area = 5000,
  residence_col = "land_use_verbose",
  residences = "Residence",
  percent_out = FALSE,
  max_dist = 300,
  verbose = FALSE
)

This indicator not only considers public green areas, but also private green areas (gardens) to compensate those areas with more dense urban fabric.

NO2 sequestered by urban green

no2_seq(x, green_df = NULL)

Nitrogen dioxide is a good proxy of overall air quality and one of the most concerning issues in cities, with important consequences on respiratory diseases and lung cancer. This indicator calculates the amount of NO2 sequestered by urban green and urban agriculture solutions (in g/s).

The future scenario would have the potential to sequester 4.9 gr/s of NO2 more than the current scenario. For reference, a car at 50 km/h emits around 0.84 gr/s.

Volunteers involved in urban agriculture

edible_volunteers(
  x,
  volunteers = c(0.00163, 0.22),
  edible = NULL,
  area_col = "edible_area",
  interval = 0.95,
  verbose = FALSE
)

We used the same equation to calculate jobs and volunteers with different values of k, in this case:

\[ volunteers | jobs = \sum_{i=1}^{N}a_i \times k \]

While in the current scenario the number of estimated volunteers is between 2 and 33, the number of volunteers estimated in the future scenario is between 475 and 8,191.

The number of inhabitants in Sant Narcis 6,318.

Food security

food_production(
  x,
  edible_df = NULL,
  area_col = "edible_area",
  interval = 0.95,
  verbose = FALSE
)

The food security is considered the ratio between the food produced and consumed in the neighbourhood.

  • The current scenario, in average, might produce the 0.04% of the food consumed (192 kg/year in average).
  • This value increases to 10.19% in the future scenario (47 tonnes/year in average).

Conclusions

  • Urban agriculture is cool!
  • Other conclusions are up to you. 😉

Figure 1: Menja’t Sant Narcís